﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Security.Cryptography;

namespace CompteBancaire
{
    public class UtilisateurService : IUtilisateurService
    {
        protected IAccesBD bdd;
        protected Utilisateur u;
        private static UTF8Encoding enc = new UTF8Encoding();
        private static SHA512Managed hasher = new SHA512Managed();

        public UtilisateurService(IAccesBD bdd) { this.bdd = bdd; }

        /* Retourne l'Utilisateur si connexion réussie. null sinon */
        public bool connexion(String login, String motPasse)
        {
            u = bdd.extraireUtilisateur(login, hasher.ComputeHash(enc.GetBytes(motPasse)));
            return u != null;
        }

        public bool changerMotPasse(String motPasse)
        {
            byte[] old_passwd = u.Passwd;
            u.Passwd = hasher.ComputeHash(enc.GetBytes(motPasse));
            if (bdd.sauverUtilisateur(u))
            {
                return true;
            }
            u.Passwd= old_passwd;
            return false;
        }

        public bool changerLogin(String login)
        {
            String old_login = u.Login;
            u.Login = login;
            if (bdd.sauverUtilisateur(u))
            {
                return true;
            }
            u.Login = old_login;
            return false;
        }

        public Utilisateur User { get { return u; } set { u = value; } }
    }
}
